﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Collections;

namespace Incident_Manager_PUCP
{
    public partial class frmModificarServicio : Form
    {
        /// <summary>
        /// Christian Fernández
        /// </summary>
        private Servicio servicio;

        //Patron Singleton para obtener la instancia del gestor cliente.

        public static GestorServicio gestorServicio = GestorServicio.ObtenerInstancia();


        public frmModificarServicio(Servicio servicio){
            this.servicio = servicio;

            InitializeComponent();
            //this.lbTareasServicio.DataSource = listaTareas;

            cargaServicio();
        }

        private void cargaServicio() {
            if (servicio != null) {
                tbCodigo.Text = servicio.getCodigo();
                tbNombre.Text = servicio.getNombre();

                cbTipo.SelectedValue = servicio.getTipo();

                tbHorarioCobertura.Text = servicio.getHorarioCobertura();
                tbTiempoRespuesta.Text = servicio.getTiempoRespuesta();

                cbModoAtencion.SelectedValue = servicio.getModoAtencion();

                foreach (string tarea in servicio.getTareasServicio())
                    lbTareasServicio.Items.Add(tarea);


                tbInformacionAdicional.Text = servicio.getInformacionAdicional();
            }
            else
                tbCodigo.ReadOnly = false;
        }
                
        private void button1_Click(object sender, EventArgs e)
        {
            if (tbCodigo.Text == "") {
                MessageBox.Show("Debe ingresar un código");
                return;
            }
            if (tbNombre.Text == "") {
                MessageBox.Show("Debe ingresar un nombre");
                return;
            }

            List<string> tareas = new List<string>();
            foreach (string tarea in lbTareasServicio.Items)
                tareas.Add(tarea);
            
            if (gestorServicio.modificarServicio(
                    tbCodigo.Text,
                    tbNombre.Text,
                    cbTipo.SelectedItem != null ? cbTipo.SelectedItem.ToString() : string.Empty,
                    tbHorarioCobertura.Text,
                    tbTiempoRespuesta.Text,
                    cbModoAtencion.SelectedItem != null ? cbModoAtencion.SelectedItem.ToString() : string.Empty,
                    tareas,
                    tbInformacionAdicional.Text
                )) {

                tbCodigo.Text = "";
                tbNombre.Text = "";

                cbTipo.SelectedItem = "";

                tbHorarioCobertura.Text = "";
                tbTiempoRespuesta.Text = "";

                cbModoAtencion.SelectedItem = "";

                lbTareasServicio.Items.Clear();

                tbInformacionAdicional.Text = "";
            }
            
            MessageBox.Show(this, gestorServicio.lastMsg);
        }

        private void btnCancelar_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void toolTip1_Popup(object sender, PopupEventArgs e) {

        }

        //agregar tareas
        private void btnAddTareasServicio_Click(object sender, EventArgs e) {
            this.lbTareasServicio.Items.Add(this.tbTareasServicio.Text);
            this.tbTareasServicio.Text = "";
        }

        //eliminar tarteas
        private void lbTareasServicio_SelectedIndexChanged(object sender, EventArgs e) {
            this.lbTareasServicio.Items.Remove(this.lbTareasServicio.SelectedItem);
        }

        private void frmModificarServicio_Load(object sender, EventArgs e) {

        }
    }
}
